
#include "stm32f10x.h"

#define __CHIP_PIN_C__
#include "Chip_Pin.h"



typedef struct
{
	GPIO_TypeDef* GPIOx;
	u16 GPIO_Pin;
	GPIOSpeed_TypeDef GPIO_Speed;
	GPIOMode_TypeDef GPIO_Mode;
	BitAction BitVal;
}GPIO_Init_List;

const GPIO_Init_List Gpio_All[]={
//	{GPIOA,	GPIO_Pin_0,	GPIO_Speed_2MHz,	GPIO_Mode_IPU,			Bit_SET},	//WAKE_UP POWER_KEY
//	{GPIOB,	GPIO_Pin_12,GPIO_Speed_50MHz,	GPIO_Mode_Out_PP,		Bit_SET},	//VMEM_EN
	{GPIOC,	GPIO_Pin_8,GPIO_Speed_50MHz,	GPIO_Mode_Out_PP,		Bit_RESET},	//VSD_NEN
	
	{GPIOB,	GPIO_Pin_12,GPIO_Speed_50MHz,	GPIO_Mode_Out_PP,		Bit_SET},	//SD CS
	{GPIOB,	GPIO_Pin_14,GPIO_Speed_50MHz,	GPIO_Mode_IPU,			Bit_RESET},	//SD MISO
	{GPIOB,	GPIO_Pin_13,GPIO_Speed_50MHz,	GPIO_Mode_AF_PP,		Bit_RESET},	//SD CLK
	{GPIOB,	GPIO_Pin_15,GPIO_Speed_50MHz,	GPIO_Mode_AF_PP,		Bit_RESET},	//SD MOSI
	
	
};



void GPIOX_Init(void)
{
	int i;
	GPIO_InitTypeDef GPIO_InitStructure;
	

	GPIO_StructInit(&GPIO_InitStructure);

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO
						   |RCC_APB2Periph_GPIOA 
						   |RCC_APB2Periph_GPIOB 
						   |RCC_APB2Periph_GPIOC 
						   |RCC_APB2Periph_GPIOD 
						   |RCC_APB2Periph_GPIOE 
						   |RCC_APB2Periph_GPIOF
						   |RCC_APB2Periph_GPIOG 
						   , ENABLE);
	
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//ENABLE);//DISABLE	GPIO_Remap_SWJ_JTAGDisable
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
	
	//RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO | RCC_AHBPeriph_DMA2 , ENABLE);
	for(i=0;i<sizeof(Gpio_All)/sizeof(Gpio_All[0]);i++)
	{
		GPIO_InitStructure.GPIO_Pin = Gpio_All[i].GPIO_Pin;
		GPIO_InitStructure.GPIO_Speed = Gpio_All[i].GPIO_Speed;
		GPIO_InitStructure.GPIO_Mode = Gpio_All[i].GPIO_Mode;
		
		if((Gpio_All[i].GPIO_Mode == GPIO_Mode_AF_PP)||(Gpio_All[i].GPIO_Mode == GPIO_Mode_AF_OD))
			continue;
		
		GPIO_Init(Gpio_All[i].GPIOx,&GPIO_InitStructure);

		if((Gpio_All[i].GPIO_Mode == GPIO_Mode_Out_OD)||(Gpio_All[i].GPIO_Mode == GPIO_Mode_Out_PP))
			GPIO_WriteBit(Gpio_All[i].GPIOx,Gpio_All[i].GPIO_Pin,Gpio_All[i].BitVal);
	}
}


//end file

